《高性能网站建设指南》阅读笔记_规则3- 添加Expires头
发布时间:2013-11-22 浏览:397打印字号:大中小
使用Expires来设置浏览器缓存,就是到指定的时间为止一直访问缓存中的内容。另外在http1.1中引入了cache-control头来克服Expires头的限制,因为Expires头使用一个特定时间,它要求服务器和客户端的时钟严格同步,过期时间需要经常检查,并且一旦未来这一天到了,还需要在服务器配置中提供一个新的日期。
Cache-control使用max-age指定指定组件被缓存多久,它以秒为单位定义了一个更新窗。如果从组件被请求开始过去的秒数少于max-age,浏览器就使用缓存版本。
如果你同时指定了Expires和cache-control头,max-age指令将重写Expires头。
可以在页面上设置(只适用于html等页面,不适用于组件):
可以通过iis设置:
必须是本地计算机上 Administrators组的成员或者必须被委派了相应的权限,才能执行下列步骤。作为安全性的优质操作,最好使用不属于 Administrators组的帐户登录计算机,然后使用运行方式命令以管理员身份运行 IIS管理器
在命令提示符下,键入 runas /user:administrative_accountname “mmc%systemroot%\system32\inetsrv\iis.msc”。
IIS为不同的文件设置不同的过期头
为静态文件(js,css,image)设置客户端缓存是前端优化的重要法则之一,通过IIS为静态文件设置过期头(Expires headers)很方便,
1.打开IIS管理器;
2.点击要设置的站点,在功能视图中双击HTTP响应标头,
3.然后点击,打开对话框
但是这样操作,web的整个站的所有的静态文件的缓存时间都一样,如果我们希望为不同的静态文件添加不同的缓存时间,比如有些文件很久不改变希望缓存时间长些,有些希望缓存时间短些。
操作起来还是很简单,下面以添加某一个JS文件的缓存时间为例:
1. 在IIS管理器下点击该文件的文件夹并切换到内容视图
2. 选中要设置的js文件,如上图的jquery-1.3.2.js,右键切换到功能视图,这时看到的IIS管理台内容是
双击上图的HTTP响应标头就可以像为整个站点设置过期时间一样的操作。
上面的操作最终还是生成web.config的配置,经过上面的设置你会发现在Script文件夹下生成了一个web.config配置文件,打开发现内容如下
这样就明白了通过上面在IIS管理器的“繁琐”的界面操作可以通过简单的web.config中配置即可,比如要整个Script文件夹设置统一的过期日期,只用添加一个location节即可
注意:
1. Cache-Control 具有优先权于Expires
2. 为了确保更新的组件在用户的浏览器中也更新(而不是使用缓存中的),解决方案是:将所有需要更新的组件更改文件名。